package com.kaifamiao.inherit;

/**
 * super是什么?
 *    与this不同，super不可以理解为一个引用变量
 *    super不可以以单独使用，
 *    super用来访问从父类继承的成员、调用父类构造方法
 * super的三种用法:
 *   (1)、访问从父类继承的实例变量 (取值 或 赋值)
 *   (2)、调用从父类继承的实例方法
 *   (3)、在本类构造方法中调用父类构造方法
 * super可以在哪里使用:
 *   (1)、实例初始化器(俗称普通代码块)
 *   (2)、构造方法
 *   (3)、实例方法
 *
 * super不能使用在 类方法(俗称静态方法)中、也不能使用在 类初始化器(俗称静态代码块) 中
 */
public class Child extends Father {

    public Child(){
        // 通过 "super([参数])" 形式调用父类构造方法
        super();
    }

    public Child( String name ) {
        // 通过 "super([参数])" 形式调用父类构造方法
        super( name );
    }

    public void rename( String name ) {
        // 通过 "super.实例变量名" 为从父类继承的实例变量赋值
        super.name = name ;
    }

    public void introduce(){
        // 通过 "super.实例变量名" 获取从父类继承的实例变量的值
        String x = super.name;
        System.out.println( "我是" + x );
        // 通过 "super.实例方法名([参数])" 形式来调用从父类继承的实例方法
        String name = super.getName();
        System.out.println( "我叫" + name );
    }

    public static void main(String[] args) {
        Child c = new Child( "刘彘" );
        System.out.println( c.getName() );
        c.rename("刘彻");
        System.out.println( c.getName() );
        c.introduce();
    }

}
